/*
 * Definitions.h
 *
 *  Created on: 13 mei 2013
 *      Author: Wietse
 */

#ifndef DEFINITIONS_H_
#define DEFINITIONS_H_

#include <Math.h>

/************************************************************************
* STRUCTS AND ENUMS														*
************************************************************************/

enum Component
{
	UNKNOWN,
	BASESTATION,
	QUADCOPTER,
	CRAWLER
};

/************************************************************************
* DEFINES																*
************************************************************************/

#define	DEBUG					false
#define OUTPUT					true
#define RANDOM_MESSAGE			true
#define	SEND_PROBABILITY		30
#define RESEND_PROBABILITY		50

//Select agent
#define SWARM_AGENT
//#define SOLO_AGENT

// BaseStation
#define BASESTATION_WIDTH 		2.0
#define BASESTATION_HEIGHT 		2.0

// Crawler
#define	CRAWLER_SPEED 			1.0
#define CRAWLER_WIDTH 			1.5
#define CRAWLER_HEIGHT 			1.5
#define CRAWLER_MOVEMENT_TIME	0.5
#define CRAWLER_MESSAGE_TIME	1.0

// Data
#define DATA_CONSERVATION		20

// Message
#define	MESSAGE_SPEED			3.00e8
#define MESSAGE_PROPAGATION		30.0


//Quadcopter
#define	QUADCOPTER_SPEED 					5.0
#define QUADCOPTER_WIDTH 					1.5
#define QUADCOPTER_HEIGHT 					1.5
#define QUADCOPTER_RADIUS					2.0			//Collision radius with other objects
//#define QUADCOPTER_CRAWLERINREACHTHRESHOLD 	20.0		//The distance at which the quadcopter is able to measure the crawler
#define QUADCOPTER_MARGINTOTARGET			10.0			////Defines how close the quadcopter needs to get to the target
#define QUADCOPTER_MESSAGESPEED				0.5		//Time before another message is possibly sent
#define QUADCOPTER_SAFETY_MARGIN			2.5

// Swarm
#define NUM_OF_QUADCOPTERS	10
#define NUM_OF_CRAWLERS		100
#define COVERAGE_TIME		1.0


//QAgent
#define	AGENT_CRAWLER_DETECTION_RANGE		25.0
#define AGENT_QUADCOPTER_DETECTION_RANGE	20.0	//This parameter and the above one check how many Quadcopters and Crawlers are closely positioned together
#define	AGENT_NEW_POSITION_SPEED			2.0		//Determines how quickly a new desired position is calculated.
#endif /* DEFINITIONS_H_ */
